package com.dao;

import com.beans.Tiers;
import com.utils.HibernateUtils;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class TiersDao {

    public TiersDao() {
    }

    //Cette méthode sera utiliser pour ajouter un Tiers au niveau de la BD
    public void addTiers(Tiers tiers) {

        Session session = HibernateUtils.currentSession();

        Transaction tx = session.beginTransaction();

        session.save(tiers);
        tx.commit();

        HibernateUtils.closeSession();
    }

    //Cette méthode va nous permettre d'éffectuer des mis à jour au niveau de la table Tiers
    public void updateTiers(Tiers tiers) {

        Session session = HibernateUtils.currentSession();

        Transaction tx = session.beginTransaction();

        session.save(tiers);
        tx.commit();

        HibernateUtils.closeSession();
    }

    //Cette méthode nous permet de lister les Tiers contenus dans notre BD
    public List<Tiers> selectAllTiers() {
        Tiers tiers = new Tiers();
        Session session = HibernateUtils.currentSession();
        Query query = session.createQuery("from Tiers");
        List<Tiers> list = query.list();
        for (int i = 0; i < list.size(); i++) {
            tiers = list.get(i);
        }
        return list;
    }

    //Cette méthode permet de Trouver un tier donné en fonction de son Sigle 
    public Tiers findTiers(String sigleTiers) {

        Session session = HibernateUtils.currentSession();

        Query query = session.createQuery("from Tiers where tiersSigle='" + sigleTiers + "'");
        List<Tiers> listTiers = query.list();
        return listTiers.get(0);

    }

    //Cette méthode permet de suprimer un tiers 
    public void deleteTiers(Tiers tiers) {

        Session session = HibernateUtils.currentSession();

        Transaction tx = session.beginTransaction();

        session.delete(tiers);

        tx.commit();
        HibernateUtils.closeSession();

    }
}
